1
תגובות
מערכת ניהול תוכן
פתח
mirim
,
שלום וברכה!
קיימת בעיה שהקישור לא מוביל לדף לפי הid, אלא עובר לדף show.php וכותב הערה: ( ! ) Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\new\show.php on line 45.
אשמח לעזרתכם!
ותודה על המדריכים הנהדרים
הקישור נכתב כך:
קיימת בעיה שהקישור לא מוביל לדף לפי הid, אלא עובר לדף show.php וכותב הערה: ( ! ) Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\new\show.php on line 45.
אשמח לעזרתכם!
ותודה על המדריכים הנהדרים
if(isset($_GET['id'])){
$mysqli = new mysqli('localhost', 'root', '', 'biznees') or die('vvvvvvvvvv');
$mysqli->query("SET NAMES 'utf8'");
$pageResource = $mysqli->query("SELECT name,address FROM `info` WHERE `id`=".$_GET['id']);
if( mysqli_num_rows($pageResource) != 1)
{
echo 'העמוד לא נמצא';
}
else
{
// הכנסת הנתונים מהמסד למערך
$page = mysqli_fetch_assoc($pageResource);
//בדיקה שהעמוד נמצא במסד. (יכול להיות שאין עמוד כזה בכלל)
// הדפסת הנתונים למשתמש
echo $page['name'];
//-run the query against the mysql query function
echo"<section class=titel_esek>" .$page['name']."</section>";//<!--titel_esek-->
echo"<section class=titel_esek2><h2> פרטי העסק</h2></section>";//<!--titel_esek2-->
echo"<section class=teur_esek>כתובת:" .$page['address']."</section>";//<!--teur_esek-->
echo"<section class=teur_esek>טלפון:</section>";//<!--teur_esek-->
echo"<section class=teur_esek>טלפון נוסף:</section>";//<!--teur_esek-->
echo"<section class=open_esek> שעות פתיחה :</section>";//<!--open_esek-->
echo" <br />";
echo" <section class=titel_esek2><h2>מפת הגעה</h2></section>";//<!--titel_esek2-->
}
}
else
{
echo 'העמוד המבוקש לא קיים';
}
$mysqli = new mysqli('localhost', 'root', '', 'biznees') or die('vvvvvvvvvv');
$mysqli->query("SET NAMES 'utf8'");
$pageResource = $mysqli->query("SELECT name,address FROM `info` WHERE `id`=".$_GET['id']);
if( mysqli_num_rows($pageResource) != 1)
{
echo 'העמוד לא נמצא';
}
else
{
// הכנסת הנתונים מהמסד למערך
$page = mysqli_fetch_assoc($pageResource);
//בדיקה שהעמוד נמצא במסד. (יכול להיות שאין עמוד כזה בכלל)
// הדפסת הנתונים למשתמש
echo $page['name'];
//-run the query against the mysql query function
echo"<section class=titel_esek>" .$page['name']."</section>";//<!--titel_esek-->
echo"<section class=titel_esek2><h2> פרטי העסק</h2></section>";//<!--titel_esek2-->
echo"<section class=teur_esek>כתובת:" .$page['address']."</section>";//<!--teur_esek-->
echo"<section class=teur_esek>טלפון:</section>";//<!--teur_esek-->
echo"<section class=teur_esek>טלפון נוסף:</section>";//<!--teur_esek-->
echo"<section class=open_esek> שעות פתיחה :</section>";//<!--open_esek-->
echo" <br />";
echo" <section class=titel_esek2><h2>מפת הגעה</h2></section>";//<!--titel_esek2-->
}
}
else
{
echo 'העמוד המבוקש לא קיים';
}
הקישור נכתב כך:
<a href='show.php?id=x'>".$row["id"]."</div></a>
1 תשובות
בעיקרון יש שני דברים שצריך לעשות כשמשהו לא עובד שיחסכו לך הרבה זמן:
א. לבדוק האם המשתנים מכילים מה שאתה חושבת והקישורים נראים כמו מה שאת חושבת
ב. לקרוא את טקסט השגיאה. למשל:
בטקסט השגיאה כתוב
expects parameter 1 to be mysqli_result, boolean given
מה שאומה שהמשתנה pageResource היה מסוג boolean ולא מסוג תוצאת שאילתה.
לפי הדוקומנטציה הפקודה mysqli->query מחזירה או תוצאת שאילתה או false אם השאילתה נכשלה מכל סיבה שהיא
Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.
מזה נובע שאו שהשאילתה נכשלה או שזו לא הייתה שאילתת שליפה.
מכאן צריך לבדוק למה השאילתה נכשלה. את זה אפשר לעשות באמצעות הדפסת המאפיין
$mysqli->error
(הועתק מאותו עמוד בדוקומנטציה שקושר)
ובכל אופן, הסיבה שזה קורא היא שהשאילתה לא נכונה. השאילתה שהמסד מקבל מהקוד שלך היא:
SELECT name,address FROM `info` WHERE `id`=x
שימי לב לאות X במקום מספר. היא מגיעה מהקישור (שימי לב טוב לקישור) שלא מכיל מספר עמוד אלא את האות X
היות ש-mysql מצפה שמחרוזות יופיעו תמיד בתוך גרשיים השאילתה אמורה להיות
where `id` = 'x'
אם כי עדיף לתקן את הקישור.
מסכנות:
א. לא מספיק לבדוק באמצעות mysql_num_rows, צריך גם לבדוק שהתוצאה איננה false
ב. יש איפשהו באתר מדריך על sql injection שחובה לקרוא.